home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / src / dd / dice_debugger.doc < prev    next >
Text File  |  1992-12-29  |  32KB  |  727 lines

  1. Dice/DD                              Dice/DD
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Dice Debugger (DD) User's Manual
  8.  
  9. OVERVIEW
  10.  
  11. DD is a debugger designed exclusively for the DICE compiler environment.
  12. In previous versions of DICE, all debugging had to be done with assembly
  13. language debuggers or by inserting printf() calls in the code.    This is
  14. no longer the case!   DD takes advantage of many old and many new features
  15. in the DICE compiler to provide you with the ability to debug on the source
  16. level.    DD is both command-line and mouse driven.
  17.  
  18. DD allows you to examine your program in a variety of display modes and
  19. using as many windows as you desire.  DD also features ARexx support, the
  20. ability to replace any of the builtin commands with an Arexx program, 
  21. and user-definable menus with amiga-key equivalents for the commands of 
  22. your choice.  Its point-and-click input capabilities allow you to build 
  23. complex command lines by almost exclusively using the mouse.
  24.  
  25. DD is designed to be OS friendly under OS versions 1.3 and 2.0 (and up).
  26. You may DD as many programs at a time as you like, limited only by the
  27. memory in your machine.  In fact, DD is so OS friendly, it is one of the
  28. only debuggers that can actually be used to debug itself!  To further
  29. enhance the usefulness of DD, full source code (written in DICE 'C'
  30. and A68K assembler) will be made available - you can add new commands
  31. and features that you need to solve your particular debugging problems.
  32.  
  33. DICE FEATURES
  34.  
  35. The DICE features that DD specifically takes advantage of are important
  36. to consider when writing your programs.  The more you take advantage of
  37. these great features in DICE, the better DD is able to do its job, too.
  38.  
  39. First and foremost, the DICE compiler now supports level 1 DEBUG hunks,
  40. as does the SAS compiler and many available assemblers.  In order to
  41. enable source-level debugging capabilities of DD, you need to compile
  42. with the -d1 option to generate these hunks.  You can then use DICE
  43. or any other debugger that supports the -d1 hunk format to do source
  44. level debugging.
  45.  
  46. The DICE compiler also generates the standard Amiga SYMBOL hunks.  These
  47. are used by DD to provide you with symbolic debugging capability.  When
  48. these symbols are found in the executable by DD, you will be able to
  49. use your symbolic names to reference subroutines, variables, and so on.
  50. To cause DICE to generate the symbol hunks, you must use the -s option
  51. when compiling.
  52.  
  53. Lastly, DD will cause the program being debugged to call exit() under
  54. various circumstances.    If you decide to quit DD while partway debugging
  55. through a program, your program will immediately exit().  You should take
  56. advantage of this to have your program clean up any resources it used
  57. during the debugging session (close your windows, free memory allocated,
  58. etc.).
  59.  
  60. DICE supports the ANSI atexit() function, which allows you to specify
  61. a subroutine to be executed at exit() time.  You should use the atexit()
  62. function to specify your cleanup routine.  ADDitionally, DICE supports
  63. the __autoexit keyword, which allows you to declare subroutines that
  64. are to be executed at exit() time as well.  Use either method, or a
  65. combination of both, and DD will help you to minimize the number
  66. of reboots you will have to do when debugging those difficult bugs.
  67.  
  68.  
  69. THEORY OF OPERATION
  70.  
  71. A brief discussion of how DD is implemented will help you to understand
  72. the capabilities of the debugger more fully.
  73.  
  74. DD has its own custom LoadSeg() routine that is used to load the executable
  75. from disk.  The entire executable is loaded into contiguous memory, and memory
  76. is allocated for your program's hunks as suggested by the CBM documentation.
  77. When your program is RESET (see the reset command below), your program's
  78. hunks are initialized from the originally loaded and relocations then performed.
  79. This allows you to reset your debugging session and start over without quitting
  80. and reloading all over again.  The symbolic and debugging information found
  81. in the original file are kept track of in the original file memory, to conserve
  82. memory.
  83.  
  84. DD actually shares its process with the program being debugged.  This is done
  85. in a similar fashion to the Exec Signal Exceptions.  The main difference is that
  86. DD uses two stacks, one for the program being debugged and one for the debugger
  87. itself.  This is to eliminate the need for your program to have enough extra
  88. stack to support the debugger, too.  Only a single signal bit (shared among the
  89. display windows) and the TC_TrapCode pointer of your Task structure will be
  90. seen by your program while it is being debugged.  Otherwise, DD is completely
  91. invisible to the program and it will behave as if it were run from the CLI alone.
  92.  
  93. While debugging, your process will be in one of two states - debugger state or
  94. program state.    When in debugger state, the debugger has full control, responds
  95. to your inputs, etc.  When in program state, your program is in full control and
  96. will run until it exits or until you hit a breakpoint or other stoppage (guru)
  97. of your program.  The debugger is careful NOT to do DOS calls which might cause
  98. DOS to be entered twice - DOS is not reentrant...
  99.  
  100.  
  101. GETTING STARTED
  102.  
  103. The DD executable should be in your DCC:bin directory along with your other
  104. DICE executables.  DCC:bin should also be on your path.  Note that DD is
  105. not a PURE program so you can not make it resident!  Now you can go to
  106. any directory you have a DICE compiled program and debug it.  Remember to
  107. compile with -s -d1 to get full debugging capability.
  108.  
  109. To launch the debugger, just type:
  110.     1> DD myprog parm parm parm ...
  111. Where myprog is the name of your program (to be debugged) and parm parm parm
  112. is the typical CLI arguments that you would give to your program.  DD will
  113. open a console window for you to enter commands.
  114.  
  115. If you are debugging a 'C' program (DD works for assembly programs, too), DD
  116. will automaticall set a breakpoint at _main() or @main(), which is the main()
  117. routine of your program.  You can quit your debugging session at any time by
  118. hitting ^C while the debugger is active, and DD will exit after causing your
  119. program to exit(20).
  120.  
  121.  
  122. DD'S WINDOWS
  123.  
  124. You initially start DD and have a single console window to control the debugger
  125. from.  The top few lines of the window are used to display the CPU registers of the
  126. current state of your program.    All the standard 68000 Data and ADDress Registers
  127. are displayed, as well as the PC, and SR registers.  The individual bits of the
  128. condition codes (CCR) are displayed to the right of the SR.  Also, the program's
  129. state is displayed.  Many states are possible, but typically your program will be
  130. stepped, steppedover, at a breakpoint, exited, or crashed (CPU exception).  As
  131. you maneuver through your program with the debugger, values that change in these
  132. lines will be highlighted - a visual clue to what's changing.
  133.  
  134. If you use the watchpoint features of DD, your watchpoint display will appear
  135. below the register display.  Below this is a general purpose scrollable display window which
  136. DD uses to display various information that you ask it to.  To change the information
  137. in the display area, you change the Display Mode to that of your choice.  Initially,
  138. the display area is in MIXED MODE, where your program is shown to you as lines of
  139. source code with disassembly intermixed.  When you start DD, your MIXED MODE
  140. display will show you where the PC register points.  The lines of source and
  141. disassembly that represent the current PC location will be highlighted - most likely
  142. _main or @main.
  143.  
  144. Below the general purpose display is the Status: line, where DD will display
  145. its various status and error messages.    Initially, this line says:
  146. Status: Ready for command.
  147.  
  148. Below the status line is the command line itself.  As you type in your commands,
  149. they will be displayed on the command line.  The left side of the command line
  150. is your prompt, which consists of some funny looking sequence of characters
  151. (described in the mouse input section) and the name of the source file that
  152. the PC is in.  It is always good to know what file your bug is in...
  153.  
  154. And finally, below the command line are two lines reserved for display of the
  155. current function key bindings.    By default, these are bound to some very common
  156. commands that you would otherwise have to type.
  157.  
  158. DD supports multiple windows - but all share the same command line.  You use
  159. the "open" command to open a new console window.  You may enter commands into
  160. any window.  Commands that change a window's mode or display position will affect
  161. the window you type into.
  162.  
  163.  
  164. MOUSE INTERFACE
  165.  
  166. The right mouse button is used, as normal, to operate the Intuition Menus that
  167. are bound to the window.  The left mouse button is a select button and operates
  168. differently, depending on where you click.  Clicking on text in the window
  169. generally causes the word you clicked on to be entered onto the command line
  170. automatically for you.    That funny character string on the left of the prompt
  171. is there so you can click to generate those characters.  Clicking to the
  172. right of the command line is like hitting return to execute the command.
  173. You can click in any combination of windows to build your command lines.
  174.  
  175.  
  176. COMMAND SUMMARY
  177.  
  178. Below is the command summary as found in the help command (help mode display).
  179.  
  180. NAME
  181. again            - repeat last command
  182. alias            - replace command with arexx script
  183. bp {expr}        - set breakpoint at expression
  184. bp ALL           - set all breakpoints in table
  185. breakpoints      - display breakpoint table
  186. bytes {expr}     - display bytes {at expression}
  187. changewindow     - move/size current window
  188. clear expr       - clear breakpoint at expression
  189. clear ALL        - clear all breakpoints in table
  190. close            - close a display
  191. devs             - display Exec Device List
  192. dism {expr}      - change to dism mode {at expression}
  193. dosbase          - intelligent display of DOSBase struct
  194. down             - move display down one line
  195. eval {expr}      - evaluate an expression
  196. execbase         - display ExecBase (SysBase)
  197. fkey             - set function key definition
  198. go {expr...}     - set {expr...} temp breakpoints & go
  199. help             - online help
  200. hunks            - change to hunks mode
  201. info             - display ThisTask info
  202. intrs            - display Exec Intrs List
  203. jump {name}      - jump to public screen
  204. libs             - display Exec Libs List
  205. longs {expr}     - display longs {at expression}
  206. mbar             - add menu bar
  207. mend             - add menu end mark
  208. memlist          - display Exec Mem List
  209. mitem            - add menu item
  210. mixed {expr}     - change to mixed mode {at expression}
  211. menus            - activate a new set of user menus
  212. msub             - add a sub menu item
  213. mtitle           - add menu title
  214. offsets          - toggle display address/offsets
  215. open {type}      - open a new display
  216. over {range}     - stepover one instruction or range
  217. pagedown         - move display down one page
  218. pageup           - move display up one page
  219. rendlist         - end the arexx list
  220. rgetbyte {expr}  - get bytes at {expr}
  221. rgetcom          - get command line input
  222. rgetdism {expr}  - get the dissembled line
  223. rgeteval {expr}  - evaluate the expression
  224. rgetinfo {expr}  - get the program nam
  225. rgetline {expr}  - return the source/mixed line
  226. rgetlong {expr}  - get longs at {expr}
  227. rgetword {expr}  - get words at {expr}
  228. rgetpc           - return the program counter
  229. rputlist         - add an item to the arexx list
  230. rshowlist        - show the arexx list
  231. rstartlist       - start the arexx list
  232. rx rexx-script   - execute ARexx macro
  233. saveprefs        - save DD prefs to disk
  234. set {addr} {val} - set address to val
  235. ports            - display Exec Ports List
  236. process {expr}   - display process {at expression}
  237. resources        - display Exec Resource List
  238. quit             - _exit(20) & quit DD
  239. refresh          - refresh the window
  240. registers        - toggle the register display
  241. reset            - _exit(20) & restart program
  242. rstep            - toggle library call auto stepover flag
  243. source {expr}    - change to source mode {at expression}
  244. step             - step program one instruction or range
  245. symbols {expr}   - display symbol {at expr}
  246. symlist          - display sorted symbol list
  247. tasks            - display Exec Task Lists
  248. unalias          - restore command with arexx script
  249. up               - move display up one line
  250. watchbyte {expr} - set/clear (toggle) byte watchpoints
  251. watchclear       - clear all watchpoints
  252. watchlong {expr} - set/clear (toggle) long watchpoints
  253. watchword {expr} - set/clear (toggle) word watchpoints
  254. words {expr}     - display words {at expression}
  255.  
  256. EXPRESSIONS
  257.  
  258. The expression evaluator can handle most C style expressions, and can be used
  259. on the command line to set breakpoints, display source, and so on.
  260.  
  261.  
  262. KEYBINDINGS
  263.  
  264. The following keys are bound, as defaults, in DD:
  265.  
  266. upcursor = up
  267. downcursor = down
  268. shift upcursor = pageup
  269. shift downcursor = pagedown
  270. leftcursor = left
  271. rightcursor = right
  272. return = execute command
  273. HELP = toggle to help display (help = help mode, help again = previous mode)
  274.  
  275.  
  276. AREXX SUPPORT
  277.  
  278. DD is the base name of DD's ARexx port.  The ARexx commands that are
  279. supported by DD are identical to those that you type in at the command
  280. line.  DD also has the rexx command to allow you to run rexx scripts
  281. as macros from inside DD.  These rexx script files should have the
  282. .DD extension, so you can identify which scripts are for DD.
  283.  
  284. The ALIAS command allows you to replace any of the built in commands
  285. with an Arexx script of the same name (with an appended .dbug).  DD looks
  286. first in the current directory, then in dcc:rexx/ for the command.
  287. UNALIAS cancels a previous alias.  From within the ARexx script, the internal
  288. command can be called by name.  (as can all internal commands)
  289.  
  290. The results of an internal command called by an ARexx program are placed
  291. in the ARexx result variable.
  292.  
  293. NOTE: Aliases are part of the DD preferences saved to disk, and automatically
  294. loaded on starting DD.
  295.  
  296. The Rexx port name of the first port is DD.01  Subsequent ports are named
  297. DD.02, DD.03, and so on.
  298.  
  299.  
  300.  
  301. COMMAND DESCRIPTIONS
  302.  
  303. AGAIN
  304.     This command repeats the last command entered.  It is
  305. occasionally useful when a complicated command was entered. 
  306.  
  307. ALIAS
  308.     This command provides a limited alias function for all internal
  309. commands.  When an internal command is aliased, DD looks for an AREXX
  310. program with the same name (with the .DD extension) and executes that
  311. instead of the internal command.  The internal command is still
  312. available, however, by specifying the name within the ARexx program.  
  313. This allows you to, for instance, write a replacement pagedown command that 
  314. first sends a message to the AME editor, then calls the built in DD pagedown
  315. command.  To save the change, the saveprefs command must be used.
  316.  
  317. BP {expression} 
  318. The BP command sets a breakpoint.  If the optional
  319. {expression} is given, DD will set the breakpoint at that address.
  320. The expression can also be a source line number (indicated by the
  321. trailing period.) DD will look up the source line specified, and set
  322. the breakpoint at the start of the code for that source line.  If no
  323. expression is given, DD sets the breakpoint at address in the Program
  324. Counter.  A line containing a breakpoint is underlined on the display.
  325. The mouse can also be used to set (and unset) breakpoints.  Just
  326. doubleclick on the left (address) column of the display area, and the
  327. breakpoint is set.  (If you doubleclick on an already set breakpoint,
  328. it will be unset).  If there is no more room in the breakpoint table,
  329. and there are unarmed breakpoints, one will be replaced by a newly
  330. set breakpoint;  otherwise the attempt to set a new breakpoint will
  331. fail.
  332.  
  333. BP ALL
  334.     When a breakpoint is hit, it is automatically unset.  However,
  335. it is still in the breakpoint table, and can be rearmed.  The bp all
  336. commnd rearms all breakpoints in the table. 
  337.  
  338. BREAKPOINTS
  339.     This command displays the table containing the current
  340. breakpoint list, and current status.  Breakpoints can be set and unset
  341. directly on the table display itself. 
  342.  
  343. BYTES {expression}
  344.     The bytes command changes the display mode of the current
  345. window to the bytes display.  The optional expression allows you to
  346. specify the start of the byte display.  (DD attempts to keep enforcer
  347. happy; most illegal accesses are trapped).  If no expression is
  348. specified, the address of the display remains the same; just the mode
  349. is changed. 
  350.  
  351. CHANGEWINDOW
  352.     This command is used to move and size the curren DD window.  It
  353. only operates under AmigaaOS 2.0 or greater (so, why haven't you
  354. upgraded yet ?).  The command takes the two coordinates of the upper
  355. left corner of the window, the width, and the height, and moves the
  356. window there if possible. 
  357.  
  358. CLEAR {expression}
  359.     This command clears the breakpoint at the expression.  If no
  360. expression is given, the breakpoint is cleared at the PC location.
  361. The breakpoint is not removed from the breakpoint table, and may be
  362. re-armed by the BP command.
  363.  
  364. CLEAR ALL
  365.     Clear all clears the entire breakpoint table. 
  366.  
  367. CLOSE
  368.     This command closes the current display window.  If the current
  369. window is the only DD window open, DD exits. 
  370.  
  371. DEVS
  372.     This command displays the current Exec Device List
  373.  
  374. DISM {expression}
  375.     The dism command changes the display mode of the current window
  376. to the disassembly display.  The optional expression allows you to
  377. specify the start of the disassembly display.  (DD attempts to keep
  378. enforcer happy; most illegal accesses are trapped).  If no expression
  379. is specified, the address of the display remains the same; just the
  380. mode is changed. 
  381.  
  382. DOSBASE
  383.     This command displays the pulic fields of the AmigaDOS DOSBase
  384. structure. 
  385.  
  386. DOWN
  387.     This command is used to move the cursor down one line.  New
  388. informtion is displayed at the bottom of the display area if the
  389. display scrolls.  This command acts the same as pressing the cursor
  390. down key. 
  391.  
  392. EVAL {expression}
  393.     This command evaluates an expression, and prints the result to
  394. the screen. 
  395.  
  396. EXECBASE
  397.     This command displays the current contents of the public fields
  398. of ExecBase. 
  399.  
  400. FKEY num definition
  401.     This command is used to set one of the ten function key
  402. definitions.  The command takes the function key number (from 1 to 10)
  403. and the definition string. 
  404.  
  405. GO {expression}
  406.     The go command sets all the breakpoints in the breakpoint
  407. table, and starts execution on the program being debugged.  Execution
  408. begins at the expression if provided; otherwise execution begins at
  409. the address contained in the program counter (PC).  The program runs
  410. at full speed; the debugger does not regain control until either the
  411. program exits, or the program encounters one of the breakpoints.  If
  412. more control over the execution is desired, you should use one of the
  413. single step functions (step or over) instead. 
  414.  
  415. HELP {command}
  416.     Provide short online help list
  417.  
  418. HUNKS
  419.     This command changes the current display to a table of the
  420. hunks in the progra being debugged. 
  421.  
  422. INFO
  423.     This command displays information on the current task, taken
  424. from the task structure. 
  425.  
  426. INTRS
  427.     The intrs command displays the Exec interrupt list. 
  428.  
  429. JUMP {name}
  430.     The jump command is used to jump a DD window to another public
  431. Intuition screen.  With no argument, the jump command jumps the window
  432. to the next public screen.  If an argument is specified, the jump
  433. command jumps the window to that public screen.  If the screen does
  434. not exist (or there is only one public screen, ie Workbench) nothing
  435. happens. 
  436.  
  437. LIBS
  438.     This command diplays the Exec library list.
  439.  
  440. LONGS {expression}
  441.     The longs command changes the display mode of the current
  442. window to the longs display.  The optional expression allows you to
  443. specify the start of the longs display.  (DD attempts to keep enforcer
  444. happy; most illegal accesses are trapped).  If no expression is
  445. specified, the address of the display remains the same; just the mode
  446. is changed. 
  447.  
  448. MBAR slot
  449.     This command is used when setting up the programmable menu
  450. system, to add a menubar at the specified slot.  The slot can be a
  451. positive integer (from 0 to 127) or -1 (which tells DD to append the
  452. new menu bar to the existing menus) When this command is used, menus
  453. are automatically turned off, and must be turned on with the menus
  454. command. 
  455.  
  456. MEND
  457.     This command is used when setting up the programmable menu
  458. system, to add a menu end marker at the specified slot. The slot can
  459. be a positive integer (from 0 to 127) or -1 , which tells DD to append
  460. the new menu end marker to the existing menus. When this command is
  461. used, menus are automatically turned off, and must be turned on with
  462. the menus command. 
  463.  
  464. MEMLIST
  465.     This command displays the current Exec memory lists
  466.  
  467. mitem slot label command shortcutkey
  468.     This command is used when setting up the programmable menu
  469. system, to add a menu item at the specified slot. The slot can be a
  470. positive integer (from 0 to 127) or -1 , which tells DD to append the
  471. new menu item to the end of the existing menus.  The label is what is
  472. displayed in the menu.  The command is what is executed when the menu
  473. item is selected.  The optional shortcut key is used to assign a Right
  474. Amiga key shortcut to the function.  When this command is used, menus
  475. are automatically turned off, and must be turned on with the menus
  476. command. 
  477.  
  478. MIXED {expression}
  479.     The mixed command changes the display mode of the current
  480. window to the mixed display.  The optional expression allows you to
  481. specify the start of the longs display.  (DD attempts to keep enforcer
  482. happy; most illegal accesses are trapped).  If no expression is
  483. specified, the address of the display remains the same; just the mode
  484. is changed.  The mixed mode display consists of the source for the
  485. program being debugged (if available) interspersed with the
  486. disassembled instructions that each source line compiles to. 
  487.  
  488. MENUS
  489.     This command activates the DD menus.
  490.  
  491. MSUB slot label command shortcutkey
  492.     This command is used when setting up the programmable menu
  493. system, to add a menu subitem at the specified slot. The slot can be a
  494. positive integer (from 0 to 127) or -1 , which tells DD to append the
  495. new menu subitem to the end of the existing menus.  The label is what
  496. is displayed in the menu.  The command is what is executed when the
  497. menu item is selected.  The optional shortcut key is used to assign a
  498. Right Amiga key shortcut to the function.  When this command is used,
  499. menus are automatically turned off, and must be turned on with the
  500. menus command.  Sub items are automatically attached to the nearest
  501. previous menu item.  DD does not support sub items under 1.3.
  502. Instead, they are treated as menu items. 
  503.  
  504. MTITLE slot label
  505.     This command is used when setting up the programmable menu
  506. system, to add a menu title at the specified slot.  The slot can be a
  507. positive integer (from 0 to 127) or -1 (which tells DD to append the
  508. new menu title to the existing menus) Each menu title must have at
  509. least one menu item following it.  The label is used as the menu
  510. title.  When this command is used, menus are automatically turned off,
  511. and must be turned on with the menus command. 
  512.  
  513. OFFSETS
  514.     This command toggles the display of addresses as either offsets
  515. from a listed symbol name or plain hex addresses. 
  516.  
  517. OPEN {type}
  518.     This command is used to open a new DD display.  If no type is
  519. specified, a new window is opened with the same display as the current
  520. window.  Otherwise, a display of the specified type is opened.  The
  521. displys are somewhat independent ... each can display a different
  522. address, but share breakpoints, the registers, Rexx port name, etc. 
  523.  
  524. OVER {range}
  525.     This command is used to single step the program under debug,
  526. stepping over subroutines.  The subroutine is executed, and control
  527. returns to the debugger at the instruction immediately following.
  528. The optional range parameter allows you to set up an address range
  529. for execution.  Control returns to the debugger if the program
  530. under debug leaves the range.
  531.  
  532. PAGEDOWN
  533.     This command is used to move the cursor down one page.  New
  534. informtion is displayed at the bottom of the display area if the
  535. display scrolls.  This command acts the same as pressing the shifted cursor
  536. down key. 
  537.  
  538. PAGEUP
  539.     This command is used to move the cursor up one page.  New
  540. informtion is displayed at the top of the display area if the
  541. display scrolls.  This command acts the same as pressing the shifted cursor
  542. up key. 
  543.  
  544. RENDLIST
  545.     This command is used to signal completion of a buffer list creation
  546. by an external ARexx program.  DD allows external commands to create an
  547. information list through its ARexx port.  The list is then available for
  548. display;  DD handles scrolling, refresh of the list, and so on.  This command
  549. tells DD that the list is complete and ready for display.
  550.  
  551. RGETBYTE {expression}
  552.     This command is used to get one line of bytes at expression.  If no
  553. expression is provided, the bytes will be fetched from the location specified
  554. by the PC.  The bytes are returned in the ARexx RESULT variable.
  555.  
  556. RGETCOM
  557.     This command is used to get the command line.  The command line
  558. is returned in the ARexx RESULT variable.
  559.  
  560. RGETDISM {expr}
  561.     This command is used to get one line of disassembly at expression.  If no
  562. expression is provided, the disassembly will be fetched from the location 
  563. specified by the PC.  The bytes are returned in the ARexx RESULT variable.
  564.  
  565. RGETEVAL {expr}
  566.     This command evaluates the expression, and passes it back in the
  567. ARexx RESULT variable.
  568.  
  569. RGETINFO {expr}
  570.     This command is used to get the program name and current line number
  571. of the expression.  If no expression is provided, the information will be 
  572. fetched from the location specified by the PC.  The results are returned in 
  573. the ARexx RESULT variable.
  574.  
  575. RGETLINE {expr}
  576.     This command is used to get one line of mixed display at expression.  
  577. If no expression is provided, the disassembly will be fetched from the location 
  578. specified by the PC.  The lines are returned in the ARexx RESULT variable.
  579.  
  580. RGETLONG {expr}
  581.     This command is used to get one line of long words at expression.  If no
  582. expression is provided, the long words will be fetched from the location specified
  583. by the PC.  The bytes are returned in the ARexx RESULT variable.
  584.  
  585. RGETWORD {expr}
  586.     This command is used to get one line of words at expression.  If no
  587. expression is provided, the words will be fetched from the location specified
  588. by the PC.  The bytes are returned in the ARexx RESULT variable.
  589.  
  590. RGETPC
  591.     This command is used to get the value if the current Program 
  592. Counter (PC).  The bytes are returned in the ARexx RESULT variable.
  593.  
  594. RPUTLIST
  595.     This command is used to add a line of text to the buffer list being
  596. created by an external ARexx program.  DD allows external commands to create an
  597. information list through its ARexx port.  The list is then available for
  598. display;  DD handles scrolling, refresh of the list, and so on.  This command
  599. gives a line for DD to add to the list.
  600.  
  601. RSHOWLIST
  602.     This command is used to display the external buffer list previously
  603. created with the rputlist commands.
  604.  
  605. RSTARTLIST
  606.     This command is used to signal the start of creation of a buffer list 
  607. by an external ARexx program.  DD allows external commands to create an
  608. information list through its ARexx port.  The list is then available for
  609. display;  DD handles scrolling, refresh of the list, and so on.  This command
  610. initializes the buffer list.
  611.  
  612. RX rexx-script
  613.     This command executes an external ARexx script file.  DD will treat any
  614. command given by the user which is not an internal command as an ARexx
  615. command;  the rx command is to execute scripts with the same name as
  616. internal commands, or the same name as a symbol from the program under debug.
  617.  
  618. SAVEPREFS
  619.     This command saves the configuration file for DD to dcc:config/dd.config.
  620. This file contains information on which commands are aliased, window position
  621. information, etc.
  622.  
  623. SET {address} {value}
  624.     This command is used to set the address to the specified value.  If the
  625. value is not given, a 0 will be used.  This command can also change the value
  626. of the registers  (A register is denoted by the trailing :, ie A0: or PC:).
  627.  
  628. PORTS
  629.     This command is used to display the Exec port list.
  630.  
  631. PROCESS {expression}
  632.     This command is used to display process information for the process
  633. at {expression}.  If no expression is given, the address contained in the
  634. Program Counter will be used instead.
  635.  
  636. RESOURCES
  637.     This command is used to display the Exec resources list.
  638.  
  639. QUIT
  640.     This command calls the exit routine (_exit or @exit) of the program
  641. under debug with a 20 in D0, then exits from the DD program.
  642.  
  643. REFRESH
  644.     Refresh the current window display.
  645.  
  646. REGISTERS
  647.     This command toggles the register display.  Some windows contain the
  648. register display by default (the mixed mode display, for instance).  Others
  649. do not (the source display).  The registers command changes this for a
  650. particular window.  Once the registers command has been executed in a
  651. window, the register display is on 'manual', and just obeys the register
  652. command.
  653.  
  654. RESET
  655.     This command calls the exit routine (_exit or @exit) of the program
  656. under debug with a 20 in D0, then restarts the it.
  657.  
  658. RSTEP            - toggle library call auto stepover flag
  659.     This command toggles the auto stepover flag for libraries.  If rstep
  660. is on, then DD will automatically use OVER when asked to STEP into an 
  661. Amiga rom routine.
  662.  
  663. source {expression}
  664.     The source command changes the display mode of the current window
  665. to the source display.  The optional expression allows you to
  666. specify the start of the source display.  (DD attempts to keep
  667. enforcer happy; most illegal accesses are trapped).  If no expression
  668. is specified, the address of the display remains the same; just the
  669. mode is changed. 
  670.  
  671. STEP
  672.     This command is used to single step the program under debug.
  673. The optional range parameter allows you to set up an address range
  674. for execution.  Control returns to the debugger if the program
  675. under debug leaves the range.
  676.  
  677. SYMBOLS {expression}
  678.     This command is used to display the symbol table for the program
  679. under debug.  Breakpoints can be set from this table.  This table is 
  680. ordered by address.
  681.     
  682. SYMLIST
  683.     This command is used to display the symbol table for the program
  684. under debug.  This table is sorted.
  685.  
  686. TASKS
  687.     This command will display the Exec task list.
  688.  
  689. UNALIAS
  690.     This command removes a previously set alias.  To save the change, 
  691. the saveprefs command must be used.
  692.  
  693. UP
  694.     This command is used to move the cursor up one line.  New
  695. informtion is displayed at the top of the display area if the
  696. display scrolls.  This command acts the same as pressing the cursor up key. 
  697.  
  698. WATCHBYTE {expression} - set/clear (toggle) byte watchpoints
  699.     This command is used to see the values of bytes at the specified
  700. expression.  This command  sets or clears a watchbyte.  If there are any 
  701. watchbytes,  the display is added to the current DD window;  otherwise there is
  702. no watchbyte display.  The expression can be an address, or a symbol.
  703.  
  704. WATCHCLEAR       - clear all watchpoints
  705.     This command removes all watchbytes, watchwords, and watchlongs.
  706.  
  707. WATCHLONG {expr} - set/clear (toggle) long watchpoints
  708.     This command is used to see the values of longss at the specified
  709. expression.  This command  sets or clears a watchlong.  If there are any 
  710. watchlongs,  the display is added to the current DD window;  otherwise there is
  711. no watchlong display.  The expression can be an address, or a symbol.
  712.  
  713. WATCHWORD {expr} - set/clear (toggle) word watchpoints
  714.     This command is used to see the values of words at the specified
  715. expression.  This command  sets or clears a watchword.  If there are any 
  716. watchwords,  the display is added to the current DD window;  otherwise there is
  717. no watchword display.  The expression can be an address, or a symbol.
  718.  
  719. WORDS {expression}
  720.     The dism command changes the display mode of the current window
  721. to the word display.  The optional expression allows you to
  722. specify the start of the word display.  (DD attempts to keep
  723. enforcer happy; most illegal accesses are trapped).  If no expression
  724. is specified, the address of the display remains the same; just the
  725. mode is changed. 
  726.  
  727.